/*
iris
*/
package main

import (
	"github.com/kataras/iris/v12"

	"github.com/kataras/iris/v12/middleware/logger"
	"github.com/kataras/iris/v12/middleware/recover"
)

func main() {
	app := iris.New()
	app.Logger().SetLevel("debug")
	// 可选的，recover 和logger 是内建的中间件，帮助在 崩溃时记录和恢复
	app.Use(recover.New())
	app.Use(logger.New())

	// GET方法 返回一个 HTML
	// 示例 URL :  http://localhost:8080
	app.Handle("GET", "/", func(ctx iris.Context) {
		ctx.HTML("<h1>Welcome</h1>")
	})

	//  GET方法 返回 字符串
	// 示例 URL :  http://localhost:8080/ping
	app.Get("/ping", func(ctx iris.Context) {
		ctx.WriteString("pong")
	})

	//  GET 方法 返回 JSON 格式的数据
	// 示例 URL : http://localhost:8080/hello
	app.Get("/hello", func(ctx iris.Context) {
		ctx.JSON(iris.Map{"message": "Hello Iris!"})
	})

	tmpl := iris.HTML("./views", ".html")
	// Set custom delimeters.
	tmpl.Delims("{{", "}}")
	tmpl.AddFunc("greet", func(s string) string {
		return "Greetings " + s + "!"
	})
	app.RegisterView(tmpl)

	// http://localhost:8080/hi
	app.Get("/hi", func(ctx iris.Context) {
		// Bind: {{.message}} with "Hello world!"
		ctx.ViewData("message", "Hello world!")
		// Render template file: ./views/hi_iris.html
		ctx.View("hi_iris.html")
	})

	// 启动
	// http://localhost:8080
	// http://localhost:8080/ping
	// http://localhost:8080/hello
	app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed))
}
